Put the ipynb file and html file in the github branch you created in the last assignment and submit the link to the commit in brightspace
from plotly.offline import init_notebook_mode
import plotly.io as pio
import plotly.express as px
init_notebook_mode(connected=True)
pio.renderers.default = "plotly_mimetype+notebook"
#load data
df = px.data.gapminder()
df.head()
| country | continent | year | lifeExp | pop | gdpPercap | iso_alpha | iso_num | |
|---|---|---|---|---|---|---|---|---|
| 0 | Afghanistan | Asia | 1952 | 28.801 | 8425333 | 779.445314 | AFG | 4 |
| 1 | Afghanistan | Asia | 1957 | 30.332 | 9240934 | 820.853030 | AFG | 4 |
| 2 | Afghanistan | Asia | 1962 | 31.997 | 10267083 | 853.100710 | AFG | 4 |
| 3 | Afghanistan | Asia | 1967 | 34.020 | 11537966 | 836.197138 | AFG | 4 |
| 4 | Afghanistan | Asia | 1972 | 36.088 | 13079460 | 739.981106 | AFG | 4 |
Recreate the barplot below that shows the population of different continents for the year 2007.
Hints:
%matplotlib notebook
from urllib.request import urlopen
from plotly.offline import init_notebook_mode
import plotly.express as px
import plotly.graph_objects as go
import json
import pandas as pd
import numpy as np
import itertools
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import plotly.io as pio
import geopandas as gpd
init_notebook_mode(connected=True)
pio.renderers.default = "plotly_mimetype+notebook"
# YOUR CODE HERE
df2007 = df.query('year == 2007')
new = df2007.groupby('continent').sum()
fig = px.bar(new, x = 'pop', y = new.index, color = new.index,
orientation = 'h', text_auto = '.2s')
fig.update_traces(textposition="outside")
fig.show()
df2007 = df.query('year == 2007')
new = df2007.groupby('continent').sum()
fig = px.bar(new, x = 'pop', y = new.index, color = new.index,
orientation = 'h', text_auto = '.2s')
fig.update_yaxes(categoryorder = 'total ascending')
fig.update_traces(textposition="outside")
fig.show()
Add text to each bar that represents the population
df2007 = df.query('year == 2007')
new = df2007.groupby('continent').sum()
fig = px.bar(new, x = 'pop', y = new.index, color = new.index,
orientation = 'h', text_auto = '.2s')
fig.update_yaxes(categoryorder = 'total ascending')
fig.update_traces(textposition="outside")
fig.update_layout(showlegend = False)
fig.show()
Thus far we looked at data from one year (2007). Lets create an animation to see the population growth of the continents through the years
df = px.data.gapminder()
df_new = df.groupby(['continent', 'year']).sum().reset_index()
fig = px.bar(df_new, x = 'pop', y = 'continent', color = 'continent',
animation_frame = 'year', animation_group = 'continent' , range_x = [0, 4000000000])
fig.update_yaxes(categoryorder = 'total ascending')
fig.update_traces(textposition="outside", showlegend = False)
fig.update_layout(showlegend = False)
fig.show()
Instead of the continents, lets look at individual countries. Create an animation that shows the population growth of the countries through the years
df = px.data.gapminder()
df_new = df.groupby(['country', 'year']).sum().reset_index()
fig = px.bar(df_new, x = 'pop', y = 'country', color = 'country',
animation_frame = 'year', animation_group = 'country' , range_x = [0, 4000000000])
fig.update_yaxes(categoryorder = 'total ascending')
fig.update_layout(showlegend = False)
fig.show()
Clean up the country animation. Set the height size of the figure to 1000 to have a better view of the animation
df = px.data.gapminder()
df_new = df.groupby(['country', 'year']).sum().reset_index()
fig = px.bar(df_new, x = 'pop', y = 'country', color = 'country',
animation_frame = 'year', animation_group = 'country' , range_x = [0, 1600000000], height = 1000)
fig.update_yaxes(categoryorder = 'total ascending')
fig.update_traces(textposition="outside", showlegend = False)
fig.update_layout(showlegend = False)
fig.show()
df = px.data.gapminder()
df_new = df.groupby(['country', 'year']).sum().reset_index()
fig = px.bar(df_new, x = 'pop', y = 'country', color = 'country',
animation_frame = 'year', animation_group = 'country', height = 1000, range_x = [0, 1600000000])
fig.update_yaxes(categoryorder = 'total ascending', range = [(df_new.country.nunique() -10), df_new.country.nunique()])
fig.update_layout(showlegend = False)
fig.show()